package com.asa.a;


/**
 * jvm命令
 * https ://docs . oracle. com/ javase/8/docs/technotes/tools/unix/ java . html
 * @author Administrator
 *
 */
public class MingLing {
	
	/**
	 * 
	 * -Xss设置栈的大小，注意不要空格
	 * -Xss1m
	 * 
	 *	 调整堆的大小				JProfiler内存查看工具
	 * -Xms20m -Xmx20m
	 * jvisualvm.exe可以查看堆的占用情况，去工具里找插件Visual GC查看具体内存使用情况
	 * -Xmx: 最大堆空间内存(默认为物理内存的1/4)
	 * -Xms: 初始堆空间内存 (默认为物理内存的1/64)
	 * 
	 * 
	 * -XX:+PrintGCDetails	打印GC堆的细节
	 * 
	 * 
	 * -XX:NewRatio=2，表示新生代占1，老年代占2，新生代占整个堆的1/3可以修改-XX:NewRatio=4，表示新生代占1，老年代占4，新生代占整个堆的1/5
	 * 
	 * 
	 * -XX:survivorRatio=8			设置幸存代的比例，默认说是8:1:1,实验起来是6:1:1;这里的8指的是Eden代，后面两个1是幸存代from和幸存代to，from和to必须一样大
	 * 
	 * -XX:-UseAdaptiveSizePolicy	关闭自适应幸存代比率设置，开启就是+号，不是-号
	 * 
	 * -Xmn		设置新生代最大内存大小，这个指令会与-XX:NewRatio=2打架，以这个配置为准，但一般是用-XX:NewRatio=2来配置
	 * 

	 * 
	 * 设置进入老年代的参数，默认是15次GC
	 * -XX:MaxTenuringThreshold=
	 * 
	 * 
	 * 空间分配担保（老年代为年轻代担保，就是年轻代不够了，就放老年代）
				-XX:HandlePromotionFailure
	 * 
	 * 
	 * 
	 * -XX:+UseTLAB		是否开启tlab，默认就是开启的		jinfo -flag UseTLAB pid	可以通jps的id查看这个配置是否开启
	 * 
	 * -XX:TLABWasteTargetPercent		设置tlab占Eden的空间大小
	 * ●-xX:+PrintFlagsInitial :查看所有的参数的默认初始值
		●-XX: +PrintFlagsFinal :查看所有的参数的最终值(可能会存在修改，
	 * 
	 * 
	 * 
	 * 参数-server:启动Server模式， 因为在Server模式下，才可以启用逃逸分析。（JVM是Service的话，会默认起起来）
	 * 
	 * ➢选项“-XX: +DoEscapeAnalysis"显式开启逃逸分析			jdk7后默认是开的，Hotspot虚拟机
		➢通过选项“-XX: +PrintEscapeAnalysis"查看逃逸分析的筛选结果。
		
		-XX: +EliminateAllocations:开启了标量替换(默认打开)，允许将对象打散分配在栈上
		
		
	 *
	 *
	 *jdk7及以前:
			➢通过-XX: PermSize来设置永久代初始分配空间。默认值是20.75M
			➢-XX:MaxPermsize来设定永久代最大可分配空间。32位机器默认是64M，64位机器模式是82M
	 *
	 *
	 *
	 *	元数据区大小可以使用参数-XX :MetaspaceSize=25m和-XX :MaxMetaspaceSize=25m指定
	 *
	 *
	 *	MaxDirectMemorySize 直接内存大小设置，不主动设置，那么它默认和-Xmx的大小一致
	 *
	 *
	 *	-XX: CompileThreshold	热点代码触发阀值，Server模式下默认10000，如果代码被循环执行达到阈值会触发JIT编译
	 *
	 *
	 *
	 *可以使用虚拟机参数
			-xx: -UseCounterDecay来关闭热度衰减
	 *
	 *-XX:CounterHalfLifeTime 参数设置半衰周期的时间
	 *
	 *
	 *
	 *➢-Xint:完全采用解释器模式执行程序; 
		➢-Xcomp: 完全采用即时编译器模式执行程序。如果即时编译出现问题，解释器会介入执行。
		➢-Xmixed:	采用解释器+即时编译器的混合模式共同执行程序。
	 *
	 *
	 *
	 *
	 *-XX: StringTableSize=9527		可设置StringTable的长度，最小1009，可以调大，性能好些
	 *
	 *
	 *string,的垃圾回收: 
			-Xms15m -Xmx15m -XX: +PrintStringTablestatistics -XX: +PrintGCDetails

	 *
	 *
	 *
	 *- Xms8m - Xmx8m -xX: +HeapDumpOnOutofMemoryError		如果堆Dump超出异常了文件生成


	 *
	 *
	 *
	 *-XX:+PrintCommandLineFlags: 查看命令行相关参数(包含使用的垃圾收集器)
	 *
	 *
	 *
	 *-XX: +UseParallelGC	手动指 定年轻代使用Parallel并行收集器执行内存回收任务。
	 *
	 *-XX: +UseParallelOldGc	手动指定 老年代都是使用并行回收收集器
	 *
	 *-XX:ParallelGCThreads	设置年轻代并行收集器的线程数。
	 *
	 *
	 *
	 *-XX:MaxGCPauseMillis 设置垃圾收集器最大停顿时间(即STW的时间)。单位是毫秒
	 *
	 *-XX:GCTimeRatio垃圾收集时间占总时间的比例(=1/(N+1))。用于衡量吞吐量的大小。
	 *
	 *
	 *-XX: +UseAdaptiveSizePolicy 设置Parallel Scavenge收集器具有自适应调节策略
	 *
	 *java -XX:+ PrintFlasInitial 
		查看所有JVM参数启动的初始值
		java .XX: + PrintFlagsFinal
		查看所有JVM参数的最终值
		java -XX:+ PrintCommandLineFlags
		查看 那些已经被用户或者JVM设置过的详细的XX参数的名称和值

	 *
	 */
	
	
	
	/**
	 * 
	 * -XX:+UseSerialGC 参数可以指定年轻代和老年代都使用串行收集器。表明新生代使用serial GC，同时老年代使用serial oldGC
	 * 
	 * 
	 * -XX:ParallelGCThreads 限制线程数量，默认开启和CPU数据相同的线程数。
	 * 
	 * 
	 * -XX: +UseConcMarkSweepGC		CMSGC
	 * 
	 * 
	 */
	
	
	
	/**
	 * 
	 * 通过阅读GC日志，我们可以了解Java虚拟机内存分配与回收策略。
		内存分配与垃圾回收的参数列表
		- XX: +PrintGC
		输出Gc日志。类似: -verbose:gc
		- XX: +Prin tGCDetails
		输出Gc的详细日志
		-xx: +PrintGCTimeStamps输出GC的时间戳( 以基准时间的形式)
		-xX:+PrintGCDateStamps输出GC的时间戳(以日期的形式，如2013-05-
		04T21 :53:59.234+0800 )
		-XX: +PrintHeapAtGC
		在进行GC的前后打印出堆的信息
		- xloggc: .. /logs/gc.1og日志文件的输出路径

	 * 
	 * ps:日志分析工具
	 * 
	 * 可以用一些工具去分析这些gc日志。
		常用的日志分析工具有: GCViewer、GCEasy、GCHisto、GCLogViewer.
		Hpjmeter、garbagecat等。

	 */
	
	
	
	
	/**
	 * 
	 * 
	 * -Xms用来设置堆空间（年轻代+老年代）的初始内存大小
		-×是jvm的运行参数
			ms 是memory start
		-Xmx用来设置堆空间(年轻代+老年代）的最大内存大小
			mx 是memory max
	 * 
	 * 
	 * 	jinfo -flag NewRatio [jpsNumber] 可以通过jps找到的进程号码，查看新生代与老年代设置的比例
	 *
	 *jinfo -flag SurvivorRatio [jpsNumber] 可以通过jps找到的进程号码，查看幸存代的比例
	 *
	 *
	 *jinfo -f lag UseParallelGC 924 
	 *
	 *
	 *jinfo -f lagUse ParallelOldGC 924

	 *jinfo -flag UseG1GC 924
	 *
	 */
	

	
	
	/**
	 * 
	 * 
	 * jstat -gc [jpsNumber]	查看GC情况
	 * 
	 * javap -v -p MethodAreaDemo.class > test2.txt
	 * 
	 * jinfo -flag SurvivorRatio [jpsNumber]
	 * 
	 */
	
	
	
	
	
	
	
	
}
